package main

import (
	"fmt"
	"runtime"
)

func main() {
	ch := make(chan int)    //用来进行数据通信的channel
	quit := make(chan bool) //用来判断是否退出的channel

	go func() { //子goroutine写数据
		ch <- 9
		close(ch)
		quit <- true
		runtime.Goexit()
	}()
	for { //当ch关闭后 ch和quit channel皆可读,ch中恒为0,select随机选case分支,当quit分支			被选择后才会退出进程,所以打印结果不唯一.
		select { //主goroutine读数据
		case num := <-ch:
			fmt.Println("主goroutine读到数据", num)
		case <-quit:
			//	break退出select中的一个case选项，类似于switch中的用法
			return //退出进程
		}
	}
}
